#ifndef BASECIPHER_H
#define BASECIPHER_H

#include "common.h"

class BaseCipher
{
private:
    int BlockSize ;
    int Round ;
    int SboxSize ;
    key_t InitialKey ;
    plaintext_t Plaintext ;
    virtual void KeySchedule() ;
    virtual void OneRound() ;
    virtual void InvOneRound() ;

public:
    ciphertext_t Ciphertext ;
    BaseCipher( const int BlockSize , const int Round , const int SboxSize , const key_t InitialKey , const plaintext_t Plaintext ) ;
    virtual ~BaseCipher(void);
    void get_CipherInfo( int& blocksize , int& round , int& sboxsize , key_t& initialkey , plaintext_t& Plaintext ) ;
    virtual void Encryption() ;
    virtual void Decryption() ;
};


#endif // BASECIPHER_H
